﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Diagnostics;

namespace LowLevelGraphics.ColorSpaces
{
    public enum RALIndex
    {
        None,
        R1000,
        R1001,
        R1002,
        R1003,
        R1004,
        R1005,
        R1006,
        R1007,
        R1008,
        R1009,
        R1010,
        R1011,
        R1012,
        R1013,	//Perlweiß	 	255, 245, 227
        R1014,	//Elfenbein	 	240, 214, 171
        R1015,	//Hellelfenbein	 	252, 235, 204
        R1016,	//Schwefelgelb	 	255, 245, 066
        R1017,	//Safrangelb	 	255, 171, 089
        R1018,	//Zinkgelb	 	255, 214, 077
        R1019,	//Graubeige	 	163, 140, 122
        R1020,	//Olivgelb	 	156, 143, 097
        R1021,	//Rapsgelb	 	252, 189, 031
        R1023,	//Verkehrsgelb	 	252, 184, 033
        R1024,	//Ockergelb	 	181, 140, 079
        R1026,	//Leuchtgelb	 	255, 255, 010
        R1027,	//Currygelb	 	153, 117, 033
        R1028,	//Melonengelb	 	255, 140, 026
        R1032,	//Ginstergelb	 	227, 163, 041
        R1033,	//Dahliengelb	 	255, 148, 054
        R1034,	//Pastelgelb	 	247, 153, 092
        R2000,	//Gelborange	 	224, 094, 031
        R2001,	//Rotorange	 	186, 046, 033
        R2002,	//Blutorange	 	204, 036, 028
        R2003,	//Pastellorange	 	255, 099, 054
        R2004,	//Reinorange	 	242, 059, 028
        R2005,	//Leuchtorange	 	252, 028, 020
        R2007,	//Leuchthellorange	 	255, 117, 033
        R2008,	//Hellrotorange	 	250, 079, 041
        R2009,	//Verkehrsorange	 	235, 059, 028
        R2010,	//Signalorange	 	212, 069, 041
        R2011,	//Tieforange	 	237, 092, 041
        R2012,	//Lachsorange	 	222, 082, 071
        R3000,	//Feuerrot	 	171, 031, 028
        R3001,	//Signalrot	 	163, 023, 026
        R3002,	//Karminrot	 	163, 026, 026
        R3003,	//Rubinrot	 	138, 018, 020
        R3004,	//Purpurrot	 	105, 015, 020
        R3005,	//Weinrot	 	079, 018, 026
        R3007,	//Schwarzrot	 	046, 018, 026
        R3009,	//Oxidrot	 	094, 033, 033
        R3011,	//Braunrot	 	120, 020, 023
        R3012,	//Beigerot	 	204, 130, 115
        R3013,	//Tomatenrot	 	150, 031, 028
        R3014,	//Altrosa	 	217, 102, 117
        R3015,	//Hellrosa	 	232, 156, 181
        R3016,	//Korallenrot	 	166, 036, 038
        R2017,	//Rose	 	209, 054, 084
        R3018,	//Erdbeerrot	 	207, 041, 066
        R3020,	//Verkehrsrot	 	199, 023, 018
        R3022,	//Lachsrot	 	217, 089, 079
        R3024,	//Leuchtrot	 	252, 010, 028
        R3026,	//Leuchthellrot	 	252, 020, 020
        R3027,	//Himbeerrot	 	181, 018, 051
        R3031,	//Orientrot	 	166, 028, 046
        R4001,	//Rotlila	 	130, 064, 128
        R4002,	//Rotviolett	 	143, 038, 064
        R4003,	//Erikaviolett	 	201, 056, 140
        R4004,	//Bordeauxviolett	 	092, 008, 043
        R4005,	//Blaulila	 	099, 061, 156
        R4006,	//Verkehrspurpur	 	145, 015, 102
        R4007,	//Purpurviolett	 	056, 010, 046
        R4008,	//Signalviolett	 	125, 031, 122
        R4009,	//Pastelviolett	 	158, 115, 148
        R4010,	//Telemagenta	 	191, 023, 115
        R5000,	//Violettblau	 	023, 051, 107
        R5001,	//Grünblau	 	010, 051, 084
        R5002,	//Ultramarinblau	 	000, 015, 117
        R5003,	//Saphirblau	 	000, 023, 069
        R5004,	//Schwarzblau	 	003, 013, 031
        R5005,	//Signalblau	 	000, 046, 122
        R5007,	//Brillantblau	 	038, 079, 135
        R5008,	//Graublau	 	026, 041, 056
        R5009,	//Azurblau	 	023, 069, 112
        R5010,	//Enzianblau	 	000, 043, 112
        R5011,	//Stahlblau	 	003, 020, 046
        R5012,	//Lichtblau	 	041, 115, 184
        R5013,	//Kobaltblau	 	000, 018, 069
        R5014,	//Taubenblau	 	077, 105, 153
        R5015,	//Himmelblau	 	023, 097, 171
        R5017,	//Verkehrsblau	 	000, 059, 128
        R5018,	//Türkisblau	 	056, 148, 130
        R5019,	//Capriblau	 	010, 066, 120
        R5020,	//Ozeanblau	 	005, 051, 051
        R5021,	//Wasserblau	 	026, 122, 099
        R5022,	//Nachtblau	 	000, 008, 079
        R5023,	//Fernblau	 	046, 082, 143
        R5024,	//Pastelblau	 	087, 140, 181
        R6000,	//Patinagrün	 	051, 120, 084
        R6001,	//Smaragdgrün	 	038, 102, 041
        R6002,	//Laubgrün	 	038, 087, 033
        R6003,	//Olivgrün	 	061, 069, 046
        R6004,	//Blaugrün	 	013, 059, 046
        R6005,	//Moosgrün	 	010, 056, 031
        R6006,	//Grauoliv	 	041, 043, 036
        R6007,	//Flaschengrün	 	028, 038, 023
        R6008,	//Braungrün	 	033, 033, 026
        R6009,	//Tannengrün	 	023, 041, 028
        R6010,	//Grasgrün	 	054, 105, 038
        R6011,	//Resedagrün	 	094, 125, 079
        R6012,	//Schwarzgrün	 	031, 046, 043
        R6013,	//Schilfgrün	 	117, 115, 079
        R6014,	//Gelboliv	 	051, 048, 038
        R6015,	//Schwarzoliv	 	041, 043, 038
        R6016,	//Türkisgrün	 	015, 112, 051
        R6017,	//Maigrün	 	064, 130, 054
        R6018,	//Gelbgrün	 	079, 168, 051
        R6019,	//Weißgrün	 	191, 227, 186
        R6020,	//Chromoxidgrün	 	038, 056, 041
        R6021,	//Blaßgrün	 	133, 166, 122
        R6022,	//Braunoliv	 	043, 038, 028
        R6024,	//Verkehrsgrün	 	036, 145, 064
        R6025,	//Farngrün	 	074, 110, 051
        R6026,	//Opalgrün	 	010, 092, 051
        R6027,	//Lichtgrün	 	125, 204, 189
        R6028,	//Kieferngrün	 	038, 074, 051
        R6029,	//Minzgrün	 	018, 120, 038
        R6032,	//Signalgrün	 	041, 138, 064
        R6033,	//Minttürkis	 	066, 140, 120
        R6034,	//Pasteltürkis	 	125, 189, 181
        R7000,	//Fehgrau	 	115, 133, 145
        R7001,	//Silbergrau	 	135, 148, 166
        R7002,	//Olivgrau	 	122, 117, 097
        R7003,	//Moosgrau	 	112, 112, 097
        R7004,	//Signalgrau	 	156, 156, 166
        R7005,	//Mausgrau	 	097, 105, 105
        R7006,	//Beigegrau	 	107, 097, 087
        R7008,	//Khakigrau	 	105, 084, 056
        R7009,	//Grüngrau	 	077, 082, 074
        R7010,	//Zeltgrau	 	074, 079, 074
        R7011,	//Eisengrau	 	064, 074, 084
        R7012,	//Basaltgrau	 	074, 084, 089
        R7013,	//Braungrau	 	071, 066, 056
        R7015,	//Schiefergrau	 	061, 066, 082
        R7016,	//Anthrazitgrau	 	038, 046, 056
        R7021,	//Schwarzgrau	 	026, 033, 041
        R7022,	//Umbragrau	 	061, 061, 059
        R7023,	//Betongrau	 	122, 125, 117
        R7024,	//Graphitgrau	 	048, 056, 069
        R7026,	//Granitgrau	 	038, 051, 056
        R7030,	//Steingrau	 	145, 143, 135
        R7031,	//Blaugrau	 	077, 092, 107
        R7032,	//Kieselgrau	 	189, 186, 171
        R7033,	//Zementgrau	 	122, 130, 117
        R7034,	//Gelbgrau	 	143, 135, 112
        R7035,	//Lichtgrau	 	212, 217, 219
        R7036,	//Platingrau	 	158, 150, 156
        R7037,	//Staubgrau	 	122, 125, 128
        R7038,	//Achatgrau	 	186, 189, 186
        R7039,	//Quarzgrau	 	097, 094, 089
        R7040,	//Fenstergrau	 	158, 163, 176
        R7042,	//Verkehrsgrau A	 	143, 150, 153
        R7043,	//Verkehrsgrau B	 	064, 069, 069
        R7044,	//Seidengrau	 	194, 191, 184
        R7045,	//Telegrau 1	 	143, 148, 158
        R7046,	//Telegrau 2	 	120, 130, 140
        R7047,	//Telegrau 4	 	217, 214, 219
        R8000,	//Grünbraun	 	125, 092, 056
        R8001,	//Ockerbraun	 	145, 082, 046
        R8002,	//Signalbraun	 	110, 059, 048
        R8003,	//Lehmbraun	 	115, 059, 036
        R8004,	//Kupferbraun	 	133, 056, 043
        R8007,	//Rehbraun	 	094, 051, 031
        R8008,	//Olivbraun	 	099, 061, 036
        R8011,	//Nußbraun	 	071, 038, 028
        R8012,	//Rotbraun	 	084, 031, 031
        R8014,	//Sepiabraun	 	056, 038, 028
        R8015,	//Kastanienbraun	 	077, 031, 028
        R8016,	//Mahagonibraun	 	061, 031, 028
        R8017,	//Schokoladenbraun	 	046, 028, 028
        R8019,	//Graubraun	 	043, 038, 041
        R8022,	//Schwarzbraun	 	013, 008, 013
        R8023,	//Orangebraun	 	156, 069, 041
        R8024,	//Beigebraun	 	110, 064, 048
        R8025,	//Blaßbraun	 	102, 074, 061
        R8028,	//Terrabraun	 	064, 046, 033
        R9001,	//Cremeweiß	 	255, 252, 240
        R9002,	//Grauweiß	 	240, 237, 230
        R9003,	//Signalweiß	 	255, 255, 255
        R9004,	//Signalschwarz	 	028, 028, 033
        R9005,	//Tiefschwarz	 	003, 005, 010
        R9006,	//Aluminiumweiß	 	166, 171, 181
        R9007,	//Aluminiumgrau	 	125, 122, 120
        R9010,	//Reinweiß	 	250, 255, 255
        R9011,	//Graphitschwarz	 	013, 018, 026
        R9016,	//Verkehrweiß	 	252, 255, 255
        R9017,	//Verkehrschwarz	 	020, 023, 028
        R9018,	//Papyrusweiß
    }
    /// <summary>
    /// 
    /// 
    /// </summary>
    [DebuggerDisplay("R: {m_R}, G: {m_G}, B: {m_B}")]
    public class RAL : RGB
    {
        protected Dictionary<Color, RALIndex> aRal = null;
        protected RALIndex m_RalIndex = RALIndex.None;

        /// <summary>
        /// primary constructor
        /// </summary>
        /// <param name="_color"></param>
        public RAL(Color _color)
            : base(_color)
        {
            aRal = CreateRalPaletteDictionary();

            if (aRal.ContainsKey(_color))
            {
                m_RalIndex = aRal[_color];
            }
            m_Color = _color;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public static Dictionary<Color, RALIndex> CreateRalPaletteDictionary()
        {
            Dictionary<Color, RALIndex> aRal = new Dictionary<Color, RALIndex>();
            aRal.Add(Color.FromArgb(204, 197, 143), RALIndex.R1000);
            aRal.Add(Color.FromArgb(209, 188, 138), RALIndex.R1001);
            aRal.Add(Color.FromArgb(210, 183, 115), RALIndex.R1002);
            aRal.Add(Color.FromArgb(247, 186, 011), RALIndex.R1003);
            aRal.Add(Color.FromArgb(226, 176, 007), RALIndex.R1004);
            aRal.Add(Color.FromArgb(200, 159, 004), RALIndex.R1005);
            aRal.Add(Color.FromArgb(225, 161, 000), RALIndex.R1006);
            aRal.Add(Color.FromArgb(231, 156, 000), RALIndex.R1007);

            aRal.Add(Color.FromArgb(175, 138, 084), RALIndex.R1011);
            aRal.Add(Color.FromArgb(217, 192, 034), RALIndex.R1012);

            aRal.Add(Color.FromArgb(255, 245, 227), RALIndex.R1013); //Perlweiß
            aRal.Add(Color.FromArgb(240, 214, 171), RALIndex.R1014); //Elfenbein
            aRal.Add(Color.FromArgb(252, 235, 204), RALIndex.R1015); //Hellelfenbein
            aRal.Add(Color.FromArgb(255, 245, 066), RALIndex.R1016); //Schwefelgelb
            aRal.Add(Color.FromArgb(255, 171, 089), RALIndex.R1017); //Safrangelb
            aRal.Add(Color.FromArgb(255, 214, 077), RALIndex.R1018); //Zinkgelb
            aRal.Add(Color.FromArgb(163, 140, 122), RALIndex.R1019); //Graubeige
            aRal.Add(Color.FromArgb(156, 143, 097), RALIndex.R1020); //Olivgelb
            aRal.Add(Color.FromArgb(252, 189, 031), RALIndex.R1021); //Rapsgelb
            aRal.Add(Color.FromArgb(252, 184, 033), RALIndex.R1023); //Verkehrsgelb
            aRal.Add(Color.FromArgb(181, 140, 079), RALIndex.R1024); //Ockergelb
            aRal.Add(Color.FromArgb(255, 255, 010), RALIndex.R1026); //Leuchtgelb
            aRal.Add(Color.FromArgb(153, 117, 033), RALIndex.R1027); //Currygelb
            aRal.Add(Color.FromArgb(255, 140, 026), RALIndex.R1028); //Melonengelb
            aRal.Add(Color.FromArgb(227, 163, 041), RALIndex.R1032); //Ginstergelb
            aRal.Add(Color.FromArgb(255, 148, 054), RALIndex.R1033); //Dahliengelb
            aRal.Add(Color.FromArgb(247, 153, 092), RALIndex.R1034); //Pastelgelb
            aRal.Add(Color.FromArgb(224, 094, 031), RALIndex.R2000); //Gelborange
            aRal.Add(Color.FromArgb(186, 046, 033), RALIndex.R2001); //Rotorange
            aRal.Add(Color.FromArgb(204, 036, 028), RALIndex.R2002); //Blutorange
            aRal.Add(Color.FromArgb(255, 099, 054), RALIndex.R2003); //Pastellorange
            aRal.Add(Color.FromArgb(242, 059, 028), RALIndex.R2004); //Reinorange
            aRal.Add(Color.FromArgb(252, 028, 020), RALIndex.R2005); //Leuchtorange
            aRal.Add(Color.FromArgb(255, 117, 033), RALIndex.R2007); //Leuchthellorange
            aRal.Add(Color.FromArgb(250, 079, 041), RALIndex.R2008); //Hellrotorange
            aRal.Add(Color.FromArgb(235, 059, 028), RALIndex.R2009); //Verkehrsorange
            aRal.Add(Color.FromArgb(212, 069, 041), RALIndex.R2010); //Signalorange
            aRal.Add(Color.FromArgb(237, 092, 041), RALIndex.R2011); //Tieforange
            aRal.Add(Color.FromArgb(222, 082, 071), RALIndex.R2012); //Lachsorange
            aRal.Add(Color.FromArgb(171, 031, 028), RALIndex.R3000); //Feuerrot
            aRal.Add(Color.FromArgb(163, 023, 026), RALIndex.R3001); //Signalrot
            aRal.Add(Color.FromArgb(163, 026, 026), RALIndex.R3002); //Karminrot
            aRal.Add(Color.FromArgb(138, 018, 020), RALIndex.R3003); //Rubinrot
            aRal.Add(Color.FromArgb(105, 015, 020), RALIndex.R3004); //Purpurrot
            aRal.Add(Color.FromArgb(079, 018, 026), RALIndex.R3005); //Weinrot
            aRal.Add(Color.FromArgb(046, 018, 026), RALIndex.R3007); //Schwarzrot
            aRal.Add(Color.FromArgb(094, 033, 033), RALIndex.R3009); //Oxidrot
            aRal.Add(Color.FromArgb(120, 020, 023), RALIndex.R3011); //Braunrot
            aRal.Add(Color.FromArgb(204, 130, 115), RALIndex.R3012); //Beigerot
            aRal.Add(Color.FromArgb(150, 031, 028), RALIndex.R3013); //Tomatenrot
            aRal.Add(Color.FromArgb(217, 102, 117), RALIndex.R3014); //Altrosa
            aRal.Add(Color.FromArgb(232, 156, 181), RALIndex.R3015); //Hellrosa
            aRal.Add(Color.FromArgb(166, 036, 038), RALIndex.R3016); //Korallenrot
            aRal.Add(Color.FromArgb(209, 054, 084), RALIndex.R2017); //Rose
            aRal.Add(Color.FromArgb(207, 041, 066), RALIndex.R3018); //Erdbeerrot
            aRal.Add(Color.FromArgb(199, 023, 018), RALIndex.R3020); //Verkehrsrot
            aRal.Add(Color.FromArgb(217, 089, 079), RALIndex.R3022); //Lachsrot
            aRal.Add(Color.FromArgb(252, 010, 028), RALIndex.R3024); //Leuchtrot
            aRal.Add(Color.FromArgb(252, 020, 020), RALIndex.R3026); //Leuchthellrot
            aRal.Add(Color.FromArgb(181, 018, 051), RALIndex.R3027); //Himbeerrot
            aRal.Add(Color.FromArgb(166, 028, 046), RALIndex.R3031); //Orientrot
            aRal.Add(Color.FromArgb(130, 064, 128), RALIndex.R4001); //Rotlila
            aRal.Add(Color.FromArgb(143, 038, 064), RALIndex.R4002); //Rotviolett
            aRal.Add(Color.FromArgb(201, 056, 140), RALIndex.R4003); //Erikaviolett
            aRal.Add(Color.FromArgb(092, 008, 043), RALIndex.R4004); //Bordeauxviolett
            aRal.Add(Color.FromArgb(099, 061, 156), RALIndex.R4005); //Blaulila
            aRal.Add(Color.FromArgb(145, 015, 102), RALIndex.R4006); //Verkehrspurpur
            aRal.Add(Color.FromArgb(056, 010, 046), RALIndex.R4007); //Purpurviolett
            aRal.Add(Color.FromArgb(125, 031, 122), RALIndex.R4008); //Signalviolett
            aRal.Add(Color.FromArgb(158, 115, 148), RALIndex.R4009); //Pastelviolett
            aRal.Add(Color.FromArgb(191, 023, 115), RALIndex.R4010); //Telemagenta
            aRal.Add(Color.FromArgb(023, 051, 107), RALIndex.R5000); //Violettblau
            aRal.Add(Color.FromArgb(010, 051, 084), RALIndex.R5001); //Grünblau
            aRal.Add(Color.FromArgb(000, 015, 117), RALIndex.R5002); //Ultramarinblau
            aRal.Add(Color.FromArgb(000, 023, 069), RALIndex.R5003); //Saphirblau
            aRal.Add(Color.FromArgb(003, 013, 031), RALIndex.R5004); //Schwarzblau
            aRal.Add(Color.FromArgb(000, 046, 122), RALIndex.R5005); //Signalblau
            aRal.Add(Color.FromArgb(038, 079, 135), RALIndex.R5007); //Brillantblau
            aRal.Add(Color.FromArgb(026, 041, 056), RALIndex.R5008); //Graublau
            aRal.Add(Color.FromArgb(023, 069, 112), RALIndex.R5009); //Azurblau
            aRal.Add(Color.FromArgb(000, 043, 112), RALIndex.R5010); //Enzianblau
            aRal.Add(Color.FromArgb(003, 020, 046), RALIndex.R5011); //Stahlblau
            aRal.Add(Color.FromArgb(041, 115, 184), RALIndex.R5012); //Lichtblau
            aRal.Add(Color.FromArgb(000, 018, 069), RALIndex.R5013); //Kobaltblau
            aRal.Add(Color.FromArgb(077, 105, 153), RALIndex.R5014); //Taubenblau
            aRal.Add(Color.FromArgb(023, 097, 171), RALIndex.R5015); //Himmelblau
            aRal.Add(Color.FromArgb(000, 059, 128), RALIndex.R5017); //Verkehrsblau
            aRal.Add(Color.FromArgb(056, 148, 130), RALIndex.R5018); //Türkisblau
            aRal.Add(Color.FromArgb(010, 066, 120), RALIndex.R5019); //Capriblau
            aRal.Add(Color.FromArgb(005, 051, 051), RALIndex.R5020); //Ozeanblau
            aRal.Add(Color.FromArgb(026, 122, 099), RALIndex.R5021); //Wasserblau
            aRal.Add(Color.FromArgb(000, 008, 079), RALIndex.R5022); //Nachtblau
            aRal.Add(Color.FromArgb(046, 082, 143), RALIndex.R5023); //Fernblau
            aRal.Add(Color.FromArgb(087, 140, 181), RALIndex.R5024); //Pastelblau
            aRal.Add(Color.FromArgb(051, 120, 084), RALIndex.R6000); //Patinagrün
            aRal.Add(Color.FromArgb(038, 102, 041), RALIndex.R6001); //Smaragdgrün
            aRal.Add(Color.FromArgb(038, 087, 033), RALIndex.R6002); //Laubgrün
            aRal.Add(Color.FromArgb(061, 069, 046), RALIndex.R6003); //Olivgrün
            aRal.Add(Color.FromArgb(013, 059, 046), RALIndex.R6004); //Blaugrün
            aRal.Add(Color.FromArgb(010, 056, 031), RALIndex.R6005); //Moosgrün
            aRal.Add(Color.FromArgb(041, 043, 036), RALIndex.R6006); //Grauoliv
            aRal.Add(Color.FromArgb(028, 038, 023), RALIndex.R6007); //Flaschengrün
            aRal.Add(Color.FromArgb(033, 033, 026), RALIndex.R6008); //Braungrün
            aRal.Add(Color.FromArgb(023, 041, 028), RALIndex.R6009); //Tannengrün
            aRal.Add(Color.FromArgb(054, 105, 038), RALIndex.R6010); //Grasgrün
            aRal.Add(Color.FromArgb(094, 125, 079), RALIndex.R6011); //Resedagrün
            aRal.Add(Color.FromArgb(031, 046, 043), RALIndex.R6012); //Schwarzgrün
            aRal.Add(Color.FromArgb(117, 115, 079), RALIndex.R6013); //Schilfgrün
            aRal.Add(Color.FromArgb(051, 048, 038), RALIndex.R6014); //Gelboliv
            aRal.Add(Color.FromArgb(041, 043, 038), RALIndex.R6015); //Schwarzoliv
            aRal.Add(Color.FromArgb(015, 112, 051), RALIndex.R6016); //Türkisgrün
            aRal.Add(Color.FromArgb(064, 130, 054), RALIndex.R6017); //Maigrün
            aRal.Add(Color.FromArgb(079, 168, 051), RALIndex.R6018); //Gelbgrün
            aRal.Add(Color.FromArgb(191, 227, 186), RALIndex.R6019); //Weißgrün
            aRal.Add(Color.FromArgb(038, 056, 041), RALIndex.R6020); //Chromoxidgrün
            aRal.Add(Color.FromArgb(133, 166, 122), RALIndex.R6021); //Blaßgrün
            aRal.Add(Color.FromArgb(043, 038, 028), RALIndex.R6022); //Braunoliv
            aRal.Add(Color.FromArgb(036, 145, 064), RALIndex.R6024); //Verkehrsgrün
            aRal.Add(Color.FromArgb(074, 110, 051), RALIndex.R6025); //Farngrün
            aRal.Add(Color.FromArgb(010, 092, 051), RALIndex.R6026); //Opalgrün
            aRal.Add(Color.FromArgb(125, 204, 189), RALIndex.R6027); //Lichtgrün
            aRal.Add(Color.FromArgb(038, 074, 051), RALIndex.R6028); //Kieferngrün
            aRal.Add(Color.FromArgb(018, 120, 038), RALIndex.R6029); //Minzgrün
            aRal.Add(Color.FromArgb(041, 138, 064), RALIndex.R6032); //Signalgrün
            aRal.Add(Color.FromArgb(066, 140, 120), RALIndex.R6033); //Minttürkis
            aRal.Add(Color.FromArgb(125, 189, 181), RALIndex.R6034); //Pasteltürkis
            aRal.Add(Color.FromArgb(115, 133, 145), RALIndex.R7000); //Fehgrau
            aRal.Add(Color.FromArgb(135, 148, 166), RALIndex.R7001); //Silbergrau
            aRal.Add(Color.FromArgb(122, 117, 097), RALIndex.R7002); //Olivgrau
            aRal.Add(Color.FromArgb(112, 112, 097), RALIndex.R7003); //Moosgrau
            aRal.Add(Color.FromArgb(156, 156, 166), RALIndex.R7004); //Signalgrau
            aRal.Add(Color.FromArgb(097, 105, 105), RALIndex.R7005); //Mausgrau
            aRal.Add(Color.FromArgb(107, 097, 087), RALIndex.R7006); //Beigegrau
            aRal.Add(Color.FromArgb(105, 084, 056), RALIndex.R7008); //Khakigrau
            aRal.Add(Color.FromArgb(077, 082, 074), RALIndex.R7009); //Grüngrau
            aRal.Add(Color.FromArgb(074, 079, 074), RALIndex.R7010); //Zeltgrau
            aRal.Add(Color.FromArgb(064, 074, 084), RALIndex.R7011); //Eisengrau
            aRal.Add(Color.FromArgb(074, 084, 089), RALIndex.R7012); //Basaltgrau
            aRal.Add(Color.FromArgb(071, 066, 056), RALIndex.R7013); //Braungrau
            aRal.Add(Color.FromArgb(061, 066, 082), RALIndex.R7015); //Schiefergrau
            aRal.Add(Color.FromArgb(038, 046, 056), RALIndex.R7016); //Anthrazitgrau
            aRal.Add(Color.FromArgb(026, 033, 041), RALIndex.R7021); //Schwarzgrau
            aRal.Add(Color.FromArgb(061, 061, 059), RALIndex.R7022); //Umbragrau
            aRal.Add(Color.FromArgb(122, 125, 117), RALIndex.R7023); //Betongrau
            aRal.Add(Color.FromArgb(048, 056, 069), RALIndex.R7024); //Graphitgrau
            aRal.Add(Color.FromArgb(038, 051, 056), RALIndex.R7026); //Granitgrau
            aRal.Add(Color.FromArgb(145, 143, 135), RALIndex.R7030); //Steingrau
            aRal.Add(Color.FromArgb(077, 092, 107), RALIndex.R7031); //Blaugrau
            aRal.Add(Color.FromArgb(189, 186, 171), RALIndex.R7032); //Kieselgrau
            aRal.Add(Color.FromArgb(122, 130, 117), RALIndex.R7033); //Zementgrau
            aRal.Add(Color.FromArgb(143, 135, 112), RALIndex.R7034); //Gelbgrau
            aRal.Add(Color.FromArgb(212, 217, 219), RALIndex.R7035); //Lichtgrau
            aRal.Add(Color.FromArgb(158, 150, 156), RALIndex.R7036); //Platingrau
            aRal.Add(Color.FromArgb(122, 125, 128), RALIndex.R7037); //Staubgrau
            aRal.Add(Color.FromArgb(186, 189, 186), RALIndex.R7038); //Achatgrau
            aRal.Add(Color.FromArgb(097, 094, 089), RALIndex.R7039); //Quarzgrau
            aRal.Add(Color.FromArgb(158, 163, 176), RALIndex.R7040); //Fenstergrau
            aRal.Add(Color.FromArgb(143, 150, 153), RALIndex.R7042); //Verkehrsgrau
            aRal.Add(Color.FromArgb(064, 069, 069), RALIndex.R7043); //Verkehrsgrau
            aRal.Add(Color.FromArgb(194, 191, 184), RALIndex.R7044); //Seidengrau
            aRal.Add(Color.FromArgb(1, 143, 148), RALIndex.R7045); //Telegrau
            aRal.Add(Color.FromArgb(2, 120, 130), RALIndex.R7046); //Telegrau
            aRal.Add(Color.FromArgb(4, 217, 214), RALIndex.R7047); //Telegrau
            aRal.Add(Color.FromArgb(125, 092, 056), RALIndex.R8000); //Grünbraun
            aRal.Add(Color.FromArgb(145, 082, 046), RALIndex.R8001); //Ockerbraun
            aRal.Add(Color.FromArgb(110, 059, 048), RALIndex.R8002); //Signalbraun
            aRal.Add(Color.FromArgb(115, 059, 036), RALIndex.R8003); //Lehmbraun
            aRal.Add(Color.FromArgb(133, 056, 043), RALIndex.R8004); //Kupferbraun
            aRal.Add(Color.FromArgb(094, 051, 031), RALIndex.R8007); //Rehbraun
            aRal.Add(Color.FromArgb(099, 061, 036), RALIndex.R8008); //Olivbraun
            aRal.Add(Color.FromArgb(071, 038, 028), RALIndex.R8011); //Nußbraun
            aRal.Add(Color.FromArgb(084, 031, 031), RALIndex.R8012); //Rotbraun
            aRal.Add(Color.FromArgb(056, 038, 028), RALIndex.R8014); //Sepiabraun
            aRal.Add(Color.FromArgb(077, 031, 028), RALIndex.R8015); //Kastanienbraun
            aRal.Add(Color.FromArgb(061, 031, 028), RALIndex.R8016); //Mahagonibraun
            aRal.Add(Color.FromArgb(046, 028, 028), RALIndex.R8017); //Schokoladenbraun
            aRal.Add(Color.FromArgb(043, 038, 041), RALIndex.R8019); //Graubraun
            aRal.Add(Color.FromArgb(013, 008, 013), RALIndex.R8022); //Schwarzbraun
            aRal.Add(Color.FromArgb(156, 069, 041), RALIndex.R8023); //Orangebraun
            aRal.Add(Color.FromArgb(110, 064, 048), RALIndex.R8024); //Beigebraun
            aRal.Add(Color.FromArgb(102, 074, 061), RALIndex.R8025); //Blaßbraun
            aRal.Add(Color.FromArgb(064, 046, 033), RALIndex.R8028); //Terrabraun
            aRal.Add(Color.FromArgb(255, 252, 240), RALIndex.R9001); //Cremeweiß
            aRal.Add(Color.FromArgb(240, 237, 230), RALIndex.R9002); //Grauweiß
            aRal.Add(Color.FromArgb(255, 255, 255), RALIndex.R9003); //Signalweiß
            aRal.Add(Color.FromArgb(028, 028, 033), RALIndex.R9004); //Signalschwarz
            aRal.Add(Color.FromArgb(003, 005, 010), RALIndex.R9005); //Tiefschwarz
            aRal.Add(Color.FromArgb(166, 171, 181), RALIndex.R9006); //Aluminiumweiß
            aRal.Add(Color.FromArgb(125, 122, 120), RALIndex.R9007); //Aluminiumgrau
            aRal.Add(Color.FromArgb(250, 255, 255), RALIndex.R9010); //Reinweiß
            aRal.Add(Color.FromArgb(013, 018, 026), RALIndex.R9011); //Graphitschwarz
            aRal.Add(Color.FromArgb(252, 255, 255), RALIndex.R9016); //Verkehrweiß
            aRal.Add(Color.FromArgb(020, 023, 028), RALIndex.R9017); //Verkehrschwarz
            aRal.Add(Color.FromArgb(219, 227, 222), RALIndex.R9018); //Papyrusweiß
            return aRal;
        }

        /// <summary>
        /// RalPaletteDictionary
        /// </summary>
        public Dictionary<Color, RALIndex> RalPaletteDictionary
        {
            get { return aRal; }
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="HSL"/> class.
        /// </summary>
        /// <param name="_H">The _ H.</param>
        /// <param name="_S">The _ S.</param>
        /// <param name="_L">The _ L.</param>
        public RAL(int _r, int _g, int _b)
            : base(_r, _g, _b)
        {
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_ralIndex"></param>
        /*        public RAL(RALIndex _ralIndex)
                {
                }*/

        /// <summary>
        /// used by clone to create da deep copy
        /// </summary>
        /// <param name="_hsl"></param>
        /*internal RAL(RAL _hsl)            
        {
        }*/

        /// <summary>
        /// Enable casting into operator
        /// </summary>
        /// <param name="_color"></param>
        /// <returns></returns>
        /*public static explicit operator RAL(Color _color)
        {
            return new RAL(_color);
        }*/

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_color"></param>
        /// <returns></returns>
        public static RAL FromColor(Color _color)
        {
            return new RAL(_color);
        }


        /// <summary>
        /// 
        /// </summary>
        protected override void CalcValues()
        {
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public override Color ToColor()
        {
            return m_Color;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public override object[] GetValues()
        {
            return new object[] { m_Color.R, m_Color.G, m_Color.B };
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_aObject"></param>
        public override void SetValues(object[] _aObject)
        {
            m_Color = Color.FromArgb((int)_aObject[0], (int)_aObject[1], (int)_aObject[2]);
            if (aRal.ContainsKey(m_Color))
            {
                m_RalIndex = aRal[m_Color];
            }
        }
    }
}
